<!DOCTYPE HTML>
<html lang="zh-CN">


<head>
    <meta charset="utf-8">
    <meta name="keywords" content="PowerPlatform认证备考（2）—— Common Data Service介绍, 码道诚公">
    <meta name="description" content="">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <meta name="renderer" content="webkit|ie-stand|ie-comp">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="baidu-site-verification" content="code-oqVlgh2wQV" />
    <meta name="google-site-verification" content="Z-8Fm46WY6NL_3kxilmoqToW4jnvyF7boTgciTLBXUs" />
    <!-- Global site tag (gtag.js) - Google Analytics -->


    <title>PowerPlatform认证备考（2）—— Common Data Service介绍 | 码道诚公</title>
    <link rel="icon" type="image/png" href="/favicon.png">

    <link rel="stylesheet" type="text/css" href="/libs/awesome/css/all.css">
    <link rel="stylesheet" type="text/css" href="/libs/materialize/materialize.min.css">
    <link rel="stylesheet" type="text/css" href="/libs/aos/aos.css">
    <link rel="stylesheet" type="text/css" href="/libs/animate/animate.min.css">
    <link rel="stylesheet" type="text/css" href="/libs/lightGallery/css/lightgallery.min.css">
    <link rel="stylesheet" type="text/css" href="/css/matery.css">
    <link rel="stylesheet" type="text/css" href="/css/my.css">

    <script src="/libs/jquery/jquery.min.js"></script>

<meta name="generator" content="Hexo 5.2.0">
<style>.github-emoji { position: relative; display: inline-block; width: 1.2em; min-height: 1.2em; overflow: hidden; vertical-align: top; color: transparent; }  .github-emoji > span { position: relative; z-index: 10; }  .github-emoji img, .github-emoji .fancybox { margin: 0 !important; padding: 0 !important; border: none !important; outline: none !important; text-decoration: none !important; user-select: none !important; cursor: auto !important; }  .github-emoji img { height: 1.2em !important; width: 1.2em !important; position: absolute !important; left: 50% !important; top: 50% !important; transform: translate(-50%, -50%) !important; user-select: none !important; cursor: auto !important; } .github-emoji-fallback { color: inherit; } .github-emoji-fallback img { opacity: 0 !important; }</style>
<link rel="alternate" href="/atom.xml" title="码道诚公" type="application/atom+xml">
<link rel="stylesheet" href="/css/prism-tomorrow.css" type="text/css"></head>




<body>
    <header class="navbar-fixed">
    <nav id="headNav" class="bg-color nav-transparent">
        <div id="navContainer" class="nav-wrapper container">
            <div class="brand-logo">
                <a href="/" class="waves-effect waves-light">
                    
                    <img src="/medias/logo.png" class="logo-img" alt="LOGO">
                    
                    <span class="logo-span">码道诚公</span>
                </a>
            </div>
            

<a href="#" data-target="mobile-nav" class="sidenav-trigger button-collapse"><i class="fas fa-bars"></i></a>
<ul class="right nav-menu">
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/" class="waves-effect waves-light">
      
      <i class="fas fa-home" style="zoom: 0.6;"></i>
      
      <span>首页</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/tags" class="waves-effect waves-light">
      
      <i class="fas fa-tags" style="zoom: 0.6;"></i>
      
      <span>标签</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/categories" class="waves-effect waves-light">
      
      <i class="fas fa-bookmark" style="zoom: 0.6;"></i>
      
      <span>分类</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/archives" class="waves-effect waves-light">
      
      <i class="fas fa-archive" style="zoom: 0.6;"></i>
      
      <span>归档</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/about" class="waves-effect waves-light">
      
      <i class="fas fa-user-circle" style="zoom: 0.6;"></i>
      
      <span>关于</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/contact" class="waves-effect waves-light">
      
      <i class="fas fa-comments" style="zoom: 0.6;"></i>
      
      <span>留言板</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/friends" class="waves-effect waves-light">
      
      <i class="fas fa-address-book" style="zoom: 0.6;"></i>
      
      <span>友情链接</span>
    </a>
    
  </li>
  
  <li>
    <a href="#searchModal" class="modal-trigger waves-effect waves-light">
      <i id="searchIcon" class="fas fa-search" title="搜索" style="zoom: 0.85;"></i>
    </a>
  </li>
</ul>


<div id="mobile-nav" class="side-nav sidenav">

    <div class="mobile-head bg-color">
        
        <img src="/medias/logo.png" class="logo-img circle responsive-img">
        
        <div class="logo-name">码道诚公</div>
        <div class="logo-desc">
            
            Never really desperate, only the lost of the soul.
            
        </div>
    </div>

    

    <ul class="menu-list mobile-menu-list">
        
        <li class="m-nav-item">
	  
		<a href="/" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-home"></i>
			
			首页
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/tags" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-tags"></i>
			
			标签
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/categories" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-bookmark"></i>
			
			分类
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/archives" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-archive"></i>
			
			归档
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/about" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-user-circle"></i>
			
			关于
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/contact" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-comments"></i>
			
			留言板
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/friends" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-address-book"></i>
			
			友情链接
		</a>
          
        </li>
        
        
    </ul>
</div>


        </div>

        
    </nav>

</header>

    



<div class="bg-cover pd-header post-cover" style="background-image: url('/medias/featureimages/12.jpg')">
    <div class="container" style="right: 0px;left: 0px;">
        <div class="row">
            <div class="col s12 m12 l12">
                <div class="brand">
                    <h1 class="description center-align post-title">PowerPlatform认证备考（2）—— Common Data Service介绍</h1>
                </div>
            </div>
        </div>
    </div>
</div>




<main class="container content">

    
    <!-- 文章内容详情 -->
<div id="artDetail">
    <div class="card">
        <div class="card-content article-info">
            <div class="row tag-cate">
                <div class="col s7">
                    
                    <div class="article-tag">
                        
                            <a href="/tags/PowerPlatform%E8%AE%A4%E8%AF%81/">
                                <span class="chip bg-color">PowerPlatform认证</span>
                            </a>
                        
                    </div>
                    
                </div>
                <div class="col s5 right-align">
                    
                    <div class="post-cate">
                        <i class="fas fa-bookmark fa-fw icon-category"></i>
                        
                            <a href="/categories/PowerPlatform/" class="post-category">
                                PowerPlatform
                            </a>
                        
                    </div>
                    
                </div>
            </div>

            <div class="post-info">
                
                <div class="post-date info-break-policy">
                    <i class="far fa-calendar-minus fa-fw"></i>发布日期:&nbsp;&nbsp;
                    2020-11-13
                </div>
                

                

                
                <div class="info-break-policy">
                    <i class="far fa-file-word fa-fw"></i>文章字数:&nbsp;&nbsp;
                    5.5k
                </div>
                

                
                <div class="info-break-policy">
                    <i class="far fa-clock fa-fw"></i>阅读时长:&nbsp;&nbsp;
                    20 分
                </div>
                

                
            </div>
        </div>
        <hr class="clearfix">
        <div class="card-content article-card-content">
            <div id="articleContent">
                <p>Common Data Service是一个基于云的低代码数据服务和应用程序平台，它使您可以利用Microsoft服务的安全性和连接性。 Common Data Service可以轻松连接到Power Platform的各个方面，因此您可以完全控制，自动化和增强业务。 借助标准实体和字段，以及轻松定义数据之间关系的能力，Common Data Service专为强大，可扩展的解决方案而构建。</p>
<p>在本模块中，您将：</p>
<ul>
<li>说明通用数据服务CDS中的环境，实体，字段和关系</li>
<li>描述通用数据服务CDS和通用数据模型CDM之间的区别</li>
<li>解释用例以及业务规则和流程流的限制</li>
</ul>
<h2 id="Common-Data-Service概览"><a href="#Common-Data-Service概览" class="headerlink" title="Common Data Service概览"></a>Common Data Service概览</h2><p>通用数据服务是一种基于云的解决方案，可以轻松地构建各种数据和业务逻辑，以安全且合规的方式支持互连的应用程序和流程。 Common Data Service由Microsoft管理和维护，在全球范围内可用，但在地理位置上进行部署以符合您潜在的数据驻留权限。 它不是为在您的服务器上独立使用而设计的，因此您将需要Internet连接才能访问和使用它。</p>
<p>通用数据服务被设计为您的业务数据中央数据存储库，甚至您可能已经在使用它。 在幕后，它为许多Microsoft Dynamics 365解决方案提供了支持，例如现场服务，市场营销，客户服务和销售。 它也可以作为Power Apps和Power Automate的一部分使用，并具有内置的本机连接性。PowerPlatform的AI Builder和Portals功能还利用了Common Data Service。</p>
<p>以下是将Common Data Service的许多产品组合在一起的可视化展示。</p>
<p><img src="https://docs.microsoft.com/zh-cn/learn/modules/introduction-common-data-service/media/common-data-service-diagram.png" alt="Common Data Service API options"></p>
<p>如您所见，Common Data Service提供了很多功能。 以下是每种功能类别的简要说明。</p>
<p><strong>Security：</strong>Common Data Service使用Azure Active Directory（Azure AD）处理身份验证，以支持条件访问和多因素身份验证。 它支持行和字段级别的授权，并提供丰富的审核功能。</p>
<p><strong>Logic：</strong>Common Data Service使您可以轻松地在数据级别应用业务逻辑。 无论用户如何与数据进行交互，都适用相同的规则。 这些规则可能关联到重复检测、业务规则、工作流或其它模块。</p>
<p><strong>Data：</strong>Common Data Service为您提供控制数据形态的控件，使您能够对数据进行发现，建模，验证和报告。 该控件可确保您的数据无论使用方式如何，都将按照您想要的方式显示。</p>
<p><strong>Storage：</strong>公共数据服务将您的物理数据存储在Azure云中。这种基于云的存储消除了担心数据存在何处或如何扩展的负担。这些问题都已经为您解决了。</p>
<p><strong>Integration：</strong>Common Data Service以不同的方式连接以支持您的业务需求。 API，webhooks，事件和数据导出使您可以灵活地输入和输出数据。</p>
<p>如您所见，Common Data Service是一个非常强大的基于云的解决方案，用于存储和处理您的业务数据。 在以下各节中，您将从Power Platform的数据存储角度看一下Common Data Service，从这里开始您的旅程。 请记住，上面讨论的其他丰富功能可以随着使用量的增加而进一步探索。</p>
<p>首先，Common Data Service使您可以创建一个或多个标准化数据库的基于云的实例。 该数据库包括预定义的表和字段，这些表和字段存储几乎在所有组织和企业中常见的数据。 您可以通过添加新的字段或表（在Common Data Service中称为实体）来自定义和扩展存储的内容。易于设置公共数据服务数据库，并对其中的数据模型标准化，从而简化了您集中精力构建解决方案的能力，而无需担心基础架构、存储和数据集成。 将您的数据存储在Common Data Service中后，可以通过许多不同的方式来访问它。 您可以使用Power Apps或Power Automate之类的工具在本地处理数据。 或通过连接器和API，您可以从任何业务解决方案连接到通用数据服务。 借助基于角色的安全性和业务规则等功能，无论如何访问数据，您都可以信任您的数据是安全的。</p>
<h3 id="Common-Data-Service定义"><a href="#Common-Data-Service定义" class="headerlink" title="Common Data Service定义"></a>Common Data Service定义</h3><p>通用数据服务数据库是通用数据服务的单个实例，该实例将数据存储在称为实体的一组标准和自定义数据结构中。 实体是用于存储数据的逻辑记录集。 实体就像关系数据库中的表一样，但是存在细微的差异。 实体中的记录包含许多字段，用于管理有关单个记录的各个信息。</p>
<h3 id="可扩展性"><a href="#可扩展性" class="headerlink" title="可扩展性"></a>可扩展性</h3><p>通用数据服务数据库支持大型数据集和复杂的数据模型。 实体可以容纳数百万个条目，并且您可以将Common Data Service数据库的每个实例中的存储空间扩展到4TB。 您的Common Data Service实例中可用的数据量取决于与其关联的许可证的数量和类型。 数据存储在所有获得许可的用户之间池化，因此您可以根据需要为所构建的每个解决方案分配存储。 如果您需要的存储空间超出标准许可中提供的存储空间，则可以购买额外的存储空间。</p>
<h3 id="Common-Data-Model-vs-Common-Data-Service"><a href="#Common-Data-Model-vs-Common-Data-Service" class="headerlink" title="Common Data Model vs. Common Data Service"></a>Common Data Model vs. Common Data Service</h3><p>Common Data Service数据库中的标准实体设计基于称为Common Data Model的开放数据模型标准。 通用数据模型是一种逻辑设计，其中包括Microsoft及其合作伙伴在称为“开放数据计划”的全行业计划中发布的一组开源、标准化、可扩展的数据实体和关系。 预定义实体、属性、语义元数据和关系的这种集合构成了通用数据模型的基础。</p>
<h3 id="开放数据倡议"><a href="#开放数据倡议" class="headerlink" title="开放数据倡议"></a>开放数据倡议</h3><p>通用数据模型是开放数据倡议的输出。 它提供了一个平台，可对您的数据进行单一，全面的查看，将您所有业务部门，整个系统中的数据汇总在一起并加以充实，以将实时情报返回到您的应用程序和服务中。 微软已经与SAP和Adobe在开放数据计划方面建立了合作关系。</p>
<h3 id="通用数据服务的结构和优势"><a href="#通用数据服务的结构和优势" class="headerlink" title="通用数据服务的结构和优势"></a>通用数据服务的结构和优势</h3><p>公共数据服务数据库的结构基于公共数据模型中的定义和架构。 使用公共数据模型作为公共数据服务数据库的基础的主要好处是简化了使用公共数据模型架构的任何解决方案的集成，因为解决方案的标准实体是相同的。 您还将能够利用供应商通过使用通用数据模型构建的丰富解决方案生态系统。 最重要的是，您可以将通用数据服务数据库扩展的范围几乎没有限制。</p>
<h2 id="识别CDS中的实体和字段"><a href="#识别CDS中的实体和字段" class="headerlink" title="识别CDS中的实体和字段"></a>识别CDS中的实体和字段</h2><p>实体在存储数据方面类似于数据库或Excel工作簿中的表。 它是一个逻辑结构，其中包含由字段组成的记录，或更简单地说，就是由行和列组成的记录。</p>
<p>在下面，您可以看到标准客户实体及其包括的各种类型的字段的屏幕截图。</p>
<p><img src="https://docs.microsoft.com/zh-cn/learn/modules/introduction-common-data-service/media/customer-entity.png" alt="Power Apps customer entity edit form"></p>
<h3 id="实体类型"><a href="#实体类型" class="headerlink" title="实体类型"></a>实体类型</h3><p>实体的两种类型为：</p>
<ul>
<li><strong>Standard -</strong> 为Common Data Service数据库的每个实例创建的基本实体集。您可以向任何实体添加更多字段，但只能从自定义实体删除字段。</li>
<li><strong>Complex -</strong> 包含复杂的服务器端业务逻辑的实体，包括实时工作流或插件。 Dynamics 365应用程序中使用的某些实体很复杂。 如果添加服务器端逻辑，则必须小心以确保用户具有使用复杂实体的适当许可证。 通过单击此模块的摘要单元内的链接，可以访问有关复杂实体的其他信息。</li>
</ul>
<h3 id="字段"><a href="#字段" class="headerlink" title="字段"></a>字段</h3><p>字段是一种在实体的记录中存储离散信息的方法。 您可以将其看作是Excel中的一列。 字段具有类型，这意味着您可以将某种类型的数据存储在与该数据类型匹配的字段中。 例如，如果您有一个需要日期的解决方案，则可以将日期存储在Date类型的字段中。 同样，如果要存储数字，则将数字存储在具有Number类型的字段中。</p>
<p>实体中字段的数量从几个字段到一百个或更多不等。 如果一个实体中需要数百个字段，则可能需要重新考虑如何为解决方案构建数据存储，因为可能有更好的方法。</p>
<p>Common Data Service中的每个数据库都以一组标准的实体开始，并且每个标准实体都有一组标准的字段。</p>
<p>请尽可能使用标准实体和字段。 您可以重命名实体，以使实体在解决方案的上下文中更易于理解。 在创建新实体之前，请一定要查看标准实体的列表，并确保标准实体不能满足您的需求。</p>
<h3 id="理解关系"><a href="#理解关系" class="headerlink" title="理解关系"></a>理解关系</h3><p>为了为您构建的大多数解决方案提供高效且可扩展的解决方案，您需要将数据拆分到不同的容器（实体）中。 尝试将所有内容存储在单个容器中可能会效率低下，并且难以使用和理解。</p>
<p>下面的例子有助于说明此概念。</p>
<p>假设您需要创建一个系统来管理销售订单。你需要一份产品清单，包括库存、成本和售价。您还需要一个包含客户地址和信用评级的主列表。最后，您将需要管理您所制作的销售发票，因此您将需要一种存储发票数据的方法。发票应该包括诸如日期、发票编号和销售人员、客户信息(包括地址和信用等级)以及发票上每个项目的行项目。订单项应包含对您所售产品的引用，并能够为每种产品提供适当的成本和价格，并根据您在该订单项中售出的数量减少现有数量。</p>
<p>尝试创建单个实体来支持先前描述的功能将是低效的。 解决此业务场景的更好方法是创建以下四个实体：</p>
<ul>
<li>Customers</li>
<li>Products</li>
<li>Invoices</li>
<li>Line Items</li>
</ul>
<p>为这些项目中的每一个创建一个实体并将它们相互关联，将使您能够构建一个可扩展的有效解决方案，同时保持高性能。 将数据拆分为多个实体还意味着您将不必存储重复数据或支持包含大量空白数据的庞大记录。 此外，如果您将数据拆分为单独的实体，报告将变得更加容易。</p>
<p>彼此相关的实体具有关系连接。 实体之间的关系以多种形式存在，但最常见的两种是一对多和多对多，这两种都由通用数据服务支持。</p>
<p>一对多关系也称为父子关系。 在前面的发票示例中，发票实体将是父实体，而订单项将是子实体。 一张发票可以有零个，一个或多个行项目（子记录），但是该行项目始终仅与一个发票（父记录）相关。 通常，如果没有父记录，则子记录将不存在。</p>
<p>一个只允许唯一值(如发票号)的字段用于标识父记录。这个惟一的字段称为键。相同的值(父键)存储在相关的子记录中。当使用子记录存储父键值时，此字段称为外键。用户可以巧妙地使用筛选来显示子记录，该子记录中的外键的值与父记录中的键值匹配。 这允许应用程序显示属于特定父记录（上一示例中的发票）的子记录（上一示例中的行项目）。 这个概念是许多商业软件应用程序的基础。</p>
<p>将数据拆分为不同的实体可以实现可扩展的高效解决方案设计，但是要知道如何将数据拆分为实体可能很困难。 值得庆幸的是，通用数据服务已经包含了大多数组织所需的许多实体。 使用标准实体并对其进行扩展将确保您以一种可靠的，可扩展的方式存储解决方案所使用的数据的方式来构建解决方案。</p>
<h2 id="Common-Data-Service中的环境"><a href="#Common-Data-Service中的环境" class="headerlink" title="Common Data Service中的环境"></a>Common Data Service中的环境</h2><p>环境用于在Power Platform中存储，管理和共享组织的业务数据，应用程序和流程。 每种环境都允许您提供一个Common Data Service数据库以在该环境中使用。 公共数据服务环境使您可以管理用户访问，安全设置以及与该数据库关联的存储。</p>
<p>每个环境都是在Microsoft Azure Active Directory（Azure AD）租户下创建的，其资源只能由该租户内的用户访问。 环境也绑定到地理位置，例如美国。 在环境中创建通用数据服务数据库时，该数据库是在该地理位置的数据中心内创建的。 您在该环境中创建的所有项目（包括连接，网关，使用Power Automate的流等）也都绑定到其环境的位置。</p>
<p><img src="https://docs.microsoft.com/zh-cn/learn/modules/introduction-common-data-service/media/environment.png" alt="Contoso tenant to environment map"></p>
<p>您可以创建多个环境来管理解决方案开发和数据存储，如设置一个开发环境、一个测试环境和一个生产环境，另外，您可以根据地理位置设置环境。 例如，您可能为欧洲和亚洲建立了一个环境。 这些环境中的每一个将具有零个或只有一个Common Data Service实例。</p>
<h2 id="业务规则"><a href="#业务规则" class="headerlink" title="业务规则"></a>业务规则</h2><p>在Common Data Service中，您可以定义业务规则。 业务规则允许您在数据层而不是应用程序层应用和维护业务逻辑。 简而言之，如果您在通用数据服务中创建业务规则，则无论您如何与数据进行交互，它们都有效。</p>
<p>业务规则用法的一个示例是当它们在画布或模型驱动的应用程序中设置或清除实体中一个或多个字段中的值时。 它们还可以用于验证存储的数据或显示错误消息。 模型驱动的应用程序可以使用业务规则来显示或隐藏字段、启用或禁用字段以及基于商业智能创建建议。</p>
<p>业务规则通常是为实体定义的，并且适用于所有表单，但是您可以为特定的模型驱动的表单定义业务规则。 Canvas应用程序不能将业务规则应用于特定的表单，但是在与数据进行交互时仍会强制执行。</p>
<p>业务规则为您提供了一种强大的方法来强制执行规则，设置值或验证数据，而不管用于输入数据的形式如何。 此外，业务规则可以有效地帮助提高数据的准确性，简化应用程序开发并简化呈现给最终用户的表单。</p>
<p>画布应用程序或模型驱动的应用程序可以使用业务规则来执行以下操作：</p>
<ul>
<li>设置字段值</li>
<li>清除字段值</li>
<li>验证数据并显式错误信息</li>
</ul>
<p>模型驱动的应用程序还可以使用业务规则来：</p>
<ul>
<li>显示或隐藏字段（仅适用于模型驱动的应用）</li>
<li>启用或禁用字段（仅适用于模型驱动的应用）</li>
<li>根据商业智能创建商业建议（仅适用于模型驱动的应用）</li>
</ul>
<p>下面是一个简单但功能强大的业务规则用法的示例。 如果将信用额度设置为大于$ 1,000,000，则业务规则配置为将“信用额度VP批准者”字段更改为必填字段。</p>
<p>如果信用额度小于$ 1,000,000，则此字段为可选。</p>
<p><img src="https://docs.microsoft.com/zh-cn/learn/modules/introduction-common-data-service/media/business-rule.png" alt="Business Rule edit form"></p>
<p>通过在数据级别而不是应用程序级别应用此业务规则，您可以更好地控制数据，并且可以确定数据遵循您的业务逻辑，无论是直接从Power Apps还是Power Automate甚至通过API访问数据。 规则与数据而不是应用程序相关。</p>
<h2 id="管理员"><a href="#管理员" class="headerlink" title="管理员"></a>管理员</h2><p>Common Data Service具有一组丰富的管理选项，可用于创建数据库的新实例或定制可用于每个Common Data Service数据库实例的用户的访问和功能。 您可以使用几个管理门户来管理通用数据服务设置。</p>
<p>本单元讨论Power Apps Admin中心，因为它可以满足您的大多数管理需求。 但是，还有一些其他管理选项可用，它们在“Manage permissions and administration for Common Data Service”学习路径中进行了介绍。</p>
<h3 id="Power-Apps管理中心"><a href="#Power-Apps管理中心" class="headerlink" title="Power Apps管理中心"></a>Power Apps管理中心</h3><p>Power Apps Admin中心提供了您所需的大多数管理设置。 当您寻求管理Common Data Service时，应该始终检查管理设置。</p>
<p>设置分为以下几大类，可以通过选择门户网站左侧的链接来访问设置，如下图所示。</p>
<p><img src="https://docs.microsoft.com/zh-cn/learn/modules/introduction-common-data-service/media/admin-center.png" alt="Environment Listing"></p>
<ul>
<li><strong>Environments</strong> - 本部分列出了通用数据服务的所有实例。</li>
<li><strong>Data policies -</strong> 本部分允许您设置策略以限制哪些数据连接器可与Common Data Service一起使用，从而限制哪些数据可以流入或流出Common Data Service实体。</li>
<li><strong>Data integration -</strong> 本部分允许您创建或添加预定义的连接，并监视Common Data Service与其他数据存储（例如Salesforce或SQL Server）之间的这些连接。</li>
<li><strong>Tenant -</strong> 本部分允许您监视许可证和配额。</li>
</ul>
<p>通过进入管理中心并打开门户左侧的每个部分，花一些时间来研究这些选项：</p>
<ol>
<li>打开<a target="_blank" rel="noopener" href="https://www.powerapps.com/">Power Apps</a>并登录</li>
<li>选择齿轮图标下的管理中心，如图所示。<img src="https://docs.microsoft.com/zh-cn/learn/modules/introduction-common-data-service/media/admin-center.png" alt="Gear Menu Admin center Selection"></li>
<li>选择管理中心门户左侧的选项。<img src="https://docs.microsoft.com/zh-cn/learn/modules/introduction-common-data-service/media/admin-menu-options.png" alt="Admin Menu options in Power Apps"></li>
</ol>
<p>Power Apps Admin中心使您可以管理设置用户，权限以及Common Data Service的许多其他重要功能的任务。</p>
<h2 id="Knowledge-check"><a href="#Knowledge-check" class="headerlink" title="Knowledge check"></a>Knowledge check</h2><ol>
<li><p>How can business rules be used in a canvas or model-driven app?</p>
<ul>
<li><p>To validate data and show error messages.</p>
<p>【Correct.】 Common Data Service allows business rules to be set to apply and maintain business logic at the data layer.</p>
</li>
<li><p>Show or hide fields.</p>
</li>
<li><p>Manage solution development and data storage.</p>
</li>
</ul>
</li>
<li><p>Your manager has built a solution using the Common Data Service using a few of the standard Entities included out of the box. He wants to capture the date that new records are added to the Entity, but he isn’t sure how. He notices that a “Date” field is already inside his Entity, but he wants the field to have a custom name of “Date Confirmed”. What would you recommend he do?</p>
<ul>
<li><p>Create a new Entity with the name “Date Confirmed”.</p>
</li>
<li><p>Use the built-in Date field within the Entity to store the date values, but rename the field to “Date Confirmed”.</p>
<p>【Correct.】 When building a solution in the Common Data Service, it is best practice to use the out-of-the-box entities and fields where possible. In this case, the Entity already has a “Date” field. Best practices also state that you simply rename the existing fields if needed, so that would be the recommended solution here.</p>
</li>
<li><p>Create a new Environment with the name “Date Confirmed”.</p>
</li>
</ul>
</li>
<li><p>One of your co-workers has set up a Model-driven application using the Common Data Service. The app captures information about computer hardware assets, including their price. Your co-worker is concerned that users of the application are going to put incorrect values into fields - for instance, they might put in the wrong cost center when submitting a new record. How could this be prevented?</p>
<ul>
<li><p>Use Business Rules to automatically validate the cost center for the currently-logged in user.</p>
<p>【Correct.】 A business rule could be set up to validate that the cost center the user has entered into the Model-driven app matches the cost center that is assigned to their department.</p>
</li>
<li><p>Use Power Automate to validate that the field value matches what the table is expecting.</p>
</li>
<li><p>Use a Canvas App instead of a Model-driven app.</p>
</li>
</ul>
</li>
</ol>
<h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>Common Data Service是基于云的数据存储，可让您利用Microsoft程序的安全性和连接性。 Common Data Service可以轻松连接到Power Platform的各个方面，因此您可以完全控制，自动化和增强业务。 借助标准实体和字段，以及轻松定义数据之间关系的能力，Common Data Service专为那些需要功能强大，可扩展的解决方案的用户而构建。</p>
<p>现在，您已经阅读了本模块，您应该能够：</p>
<ul>
<li>描述通用数据服务</li>
<li>描述通用数据模型</li>
<li>识别实体，字段和关系</li>
<li>创建环境</li>
<li>定义业务规则</li>
</ul>
<h3 id="关键点"><a href="#关键点" class="headerlink" title="关键点"></a>关键点</h3><ol>
<li>Common Data Service使用标准实体，字段和关系来帮助您构建功能强大的可扩展数据解决方案</li>
<li>使数据为您服务，以便将数据分成多个逻辑块，从而充分利用数据。</li>
<li>使用通用数据服务，您可以将数据分为各种环境，以更好地管理和保护重要信息。</li>
</ol>
<h3 id="资源"><a href="#资源" class="headerlink" title="资源"></a>资源</h3><h4 id="Common-Data-Service"><a href="#Common-Data-Service" class="headerlink" title="Common Data Service"></a>Common Data Service</h4><ul>
<li><a target="_blank" rel="noopener" href="https://docs.microsoft.com/en-us/learn/modules/intro-common-data-service/">Introduction to Common Data Service</a></li>
<li><a target="_blank" rel="noopener" href="https://docs.microsoft.com/en-us/powerapps/maker/common-data-service/data-platform-intro">Common Data Service Documentation</a></li>
<li><a target="_blank" rel="noopener" href="https://docs.microsoft.com/en-us/business-applications-release-notes/april19/cdm-data-integration/common-data-model-cdm">Common Data Model</a></li>
<li>[Licensing](<a target="_blank" rel="noopener" href="https://download.microsoft.com/download/9/5/6/9568EFD0-403D-4AE4-95F0-7FACA2CCB2E4/Power">https://download.microsoft.com/download/9/5/6/9568EFD0-403D-4AE4-95F0-7FACA2CCB2E4/Power</a> Apps and Power Automate Licensing Guide - Nov 2019.pdf)</li>
</ul>
<h4 id="Entities-fields-and-relationships"><a href="#Entities-fields-and-relationships" class="headerlink" title="Entities, fields, and relationships"></a>Entities, fields, and relationships</h4><ul>
<li><a target="_blank" rel="noopener" href="https://docs.microsoft.com/en-us/learn/modules/create-manage-entities/">Create and Manage Entities in Common Data Service</a></li>
<li><a target="_blank" rel="noopener" href="https://docs.microsoft.com/en-us/powerapps/maker/common-data-service/data-platform-complex-entities">Complex entities</a></li>
<li><a target="_blank" rel="noopener" href="https://docs.microsoft.com/en-us/powerapps/maker/common-data-service/data-platform-restricted-entities">Restricted entities requiring Dynamics 365 licenses</a></li>
<li><a target="_blank" rel="noopener" href="https://docs.microsoft.com/en-us/learn/modules/create-manage-fields-within-entity/">Create and manage fields within an entity in Common Data Service</a></li>
<li><a target="_blank" rel="noopener" href="https://docs.microsoft.com/en-us/learn/modules/create-relationship-between-cds-entities/">Create a relationship between entities in Common Data Service</a></li>
</ul>
<h4 id="Relationships-and-business-rules"><a href="#Relationships-and-business-rules" class="headerlink" title="Relationships and business rules"></a>Relationships and business rules</h4><ul>
<li><a target="_blank" rel="noopener" href="https://docs.microsoft.com/en-us/learn/modules/create-manage-environments/1-intro">Create and manage environments in Common Data Service</a></li>
<li><a target="_blank" rel="noopener" href="https://docs.microsoft.com/en-us/learn/modules/define-create-business-rules/">Define and create business rules in Common Data Service</a></li>
</ul>

            </div>
            <hr/>

            

    <div class="reprint" id="reprint-statement">
        
            <div class="reprint__author">
                <span class="reprint-meta" style="font-weight: bold;">
                    <i class="fas fa-user">
                        文章作者:
                    </i>
                </span>
                <span class="reprint-info">
                    <a href="/about" rel="external nofollow noreferrer">Guo Yaxiang</a>
                </span>
            </div>
            <div class="reprint__type">
                <span class="reprint-meta" style="font-weight: bold;">
                    <i class="fas fa-link">
                        文章链接:
                    </i>
                </span>
                <span class="reprint-info">
                    <a href="https://www.codinghonest.space/posts/ed1580f3.html">https://www.codinghonest.space/posts/ed1580f3.html</a>
                </span>
            </div>
            <div class="reprint__notice">
                <span class="reprint-meta" style="font-weight: bold;">
                    <i class="fas fa-copyright">
                        版权声明:
                    </i>
                </span>
                <span class="reprint-info">
                    本博客所有文章除特別声明外，均采用
                    <a href="https://creativecommons.org/licenses/by/4.0/deed.zh" rel="external nofollow noreferrer" target="_blank">CC BY 4.0</a>
                    许可协议。转载请注明来源
                    <a href="/about" target="_blank">Guo Yaxiang</a>
                    !
                </span>
            </div>
        
    </div>

    <script async defer>
      document.addEventListener("copy", function (e) {
        let toastHTML = '<span>复制成功，请遵循本文的转载规则</span><button class="btn-flat toast-action" onclick="navToReprintStatement()" style="font-size: smaller">查看</a>';
        M.toast({html: toastHTML})
      });

      function navToReprintStatement() {
        $("html, body").animate({scrollTop: $("#reprint-statement").offset().top - 80}, 800);
      }
    </script>



            <div class="tag_share" style="display: block;">
                <div class="post-meta__tag-list" style="display: inline-block;">
                    
                        <div class="article-tag">
                            
                                <a href="/tags/PowerPlatform%E8%AE%A4%E8%AF%81/">
                                    <span class="chip bg-color">PowerPlatform认证</span>
                                </a>
                            
                        </div>
                    
                </div>
                <div class="post_share" style="zoom: 80%; width: fit-content; display: inline-block; float: right; margin: -0.15rem 0;">
                    <link rel="stylesheet" type="text/css" href="/libs/share/css/share.min.css">
<div id="article-share">

    
    <div class="social-share" data-sites="twitter,facebook,google,qq,qzone,wechat,weibo,douban,linkedin" data-wechat-qrcode-helper="<p>微信扫一扫即可分享！</p>"></div>
    <script src="/libs/share/js/social-share.min.js"></script>
    

    

</div>

                </div>
            </div>
            
                <style>
    #reward {
        margin: 40px 0;
        text-align: center;
    }

    #reward .reward-link {
        font-size: 1.4rem;
        line-height: 38px;
    }

    #reward .btn-floating:hover {
        box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2), 0 5px 15px rgba(0, 0, 0, 0.2);
    }

    #rewardModal {
        width: 320px;
        height: 350px;
    }

    #rewardModal .reward-title {
        margin: 15px auto;
        padding-bottom: 5px;
    }

    #rewardModal .modal-content {
        padding: 10px;
    }

    #rewardModal .close {
        position: absolute;
        right: 15px;
        top: 15px;
        color: rgba(0, 0, 0, 0.5);
        font-size: 1.3rem;
        line-height: 20px;
        cursor: pointer;
    }

    #rewardModal .close:hover {
        color: #ef5350;
        transform: scale(1.3);
        -moz-transform:scale(1.3);
        -webkit-transform:scale(1.3);
        -o-transform:scale(1.3);
    }

    #rewardModal .reward-tabs {
        margin: 0 auto;
        width: 210px;
    }

    .reward-tabs .tabs {
        height: 38px;
        margin: 10px auto;
        padding-left: 0;
    }

    .reward-content ul {
        padding-left: 0 !important;
    }

    .reward-tabs .tabs .tab {
        height: 38px;
        line-height: 38px;
    }

    .reward-tabs .tab a {
        color: #fff;
        background-color: #ccc;
    }

    .reward-tabs .tab a:hover {
        background-color: #ccc;
        color: #fff;
    }

    .reward-tabs .wechat-tab .active {
        color: #fff !important;
        background-color: #22AB38 !important;
    }

    .reward-tabs .alipay-tab .active {
        color: #fff !important;
        background-color: #019FE8 !important;
    }

    .reward-tabs .reward-img {
        width: 210px;
        height: 210px;
    }
</style>

<div id="reward">
    <a href="#rewardModal" class="reward-link modal-trigger btn-floating btn-medium waves-effect waves-light red">赏</a>

    <!-- Modal Structure -->
    <div id="rewardModal" class="modal">
        <div class="modal-content">
            <a class="close modal-close"><i class="fas fa-times"></i></a>
            <h4 class="reward-title">你的赏识是我前进的动力</h4>
            <div class="reward-content">
                <div class="reward-tabs">
                    <ul class="tabs row">
                        <li class="tab col s6 alipay-tab waves-effect waves-light"><a href="#alipay">支付宝</a></li>
                        <li class="tab col s6 wechat-tab waves-effect waves-light"><a href="#wechat">微 信</a></li>
                    </ul>
                    <div id="alipay">
                        <img src="/medias/reward/alipay.png" class="reward-img" alt="支付宝打赏二维码">
                    </div>
                    <div id="wechat">
                        <img src="/medias/reward/wechat.png" class="reward-img" alt="微信打赏二维码">
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
    $(function () {
        $('.tabs').tabs();
    });
</script>

            
        </div>
    </div>

    

    

    

    

    

    
        <style>
    .mvaline-card {
        margin: 1.5rem auto;
    }

    .mvaline-card .card-content {
        padding: 20px 20px 5px 20px;
    }
</style>

<div class="card mvaline-card" data-aos="fade-up">
    <div class="comment_headling" style="font-size: 20px; font-weight: 700; position: relative; padding-left: 20px; top: 15px; padding-bottom: 5px;">
        <i class="fas fa-comments fa-fw" aria-hidden="true"></i>
        <span>评论</span>
    </div>
    <div id="mvcomments" class="card-content" style="display: grid">
    </div>
</div>

<script src="/libs/minivaline/MiniValine.js"></script>
<script>
    new MiniValine({
        el: '#mvcomments',
        appId: 'oqAo7rCWejwTqHjGC2APTVDX-MdYXbMMI',
        appKey: 'pfyY919tO7iJaDm7lFmvh5Wp',
        mode: 'DesertsP',
        placeholder: 'Write a Comment',
        pathname: window.location.pathname,
        lang: '',
        adminEmailMd5: '8BBC105436DAAF8C803841C8FD13CD0C',
        tagMeta: ["管理员", "小伙伴", "访客"],
        master: ["8BBC105436DAAF8C803841C8FD13CD0C"],
        friends: ["FA21C7921CD42FE9523E957870873F64", "586BAB41BB5692877F7714DFE4947DEC"],
        math: true,
        md: true,
        enableQQ: false,
        NoRecordIP: false,
        visitor: true,
        maxNest: 6,
        pageSize: 6,
        serverURLs: '',
        emoticonUrl: ["https://cdn.jsdelivr.net/npm/alus@latest", "https://cdn.jsdelivr.net/gh/MiniValine/qq@latest", "https://cdn.jsdelivr.net/gh/MiniValine/Bilibilis@latest", "https://cdn.jsdelivr.net/gh/MiniValine/tieba@latest", "https://cdn.jsdelivr.net/gh/MiniValine/twemoji@latest", "https://cdn.jsdelivr.net/gh/MiniValine/weibo@latest"],
    });
</script>

    

    

    

<article id="prenext-posts" class="prev-next articles">
    <div class="row article-row">
        
        <div class="article col s12 m6" data-aos="fade-up">
            <div class="article-badge left-badge text-color">
                <i class="fas fa-chevron-left"></i>&nbsp;上一篇</div>
            <div class="card">
                <a href="/posts/62451831.html">
                    <div class="card-image">
                        
                        
                        <img src="/medias/featureimages/18.jpg" class="responsive-img" alt="PowerPlatform认证备考（3）—— Power Apps介绍">
                        
                        <span class="card-title">PowerPlatform认证备考（3）—— Power Apps介绍</span>
                    </div>
                </a>
                <div class="card-content article-content">
                    <div class="summary block-with-text">
                        
                            微软PowerPlatform认证考试的相关备考知识.
                        
                    </div>
                    <div class="publish-info">
                        <span class="publish-date">
                            <i class="far fa-clock fa-fw icon-date"></i>2020-11-13
                        </span>
                        <span class="publish-author">
                            
                            <i class="fas fa-bookmark fa-fw icon-category"></i>
                            
                            <a href="/categories/PowerPlatform/" class="post-category">
                                    PowerPlatform
                                </a>
                            
                            
                        </span>
                    </div>
                </div>
                
                <div class="card-action article-tags">
                    
                    <a href="/tags/PowerPlatform%E8%AE%A4%E8%AF%81/">
                        <span class="chip bg-color">PowerPlatform认证</span>
                    </a>
                    
                </div>
                
            </div>
        </div>
        
        
        <div class="article col s12 m6" data-aos="fade-up">
            <div class="article-badge right-badge text-color">
                下一篇&nbsp;<i class="fas fa-chevron-right"></i>
            </div>
            <div class="card">
                <a href="/posts/d9adb744.html">
                    <div class="card-image">
                        
                        
                        <img src="/medias/featureimages/11.jpg" class="responsive-img" alt="PowerPlatform认证备考（1）—— PowerPlatform基本介绍">
                        
                        <span class="card-title">PowerPlatform认证备考（1）—— PowerPlatform基本介绍</span>
                    </div>
                </a>
                <div class="card-content article-content">
                    <div class="summary block-with-text">
                        
                            微软PowerPlatform认证考试的相关备考知识.
                        
                    </div>
                    <div class="publish-info">
                            <span class="publish-date">
                                <i class="far fa-clock fa-fw icon-date"></i>2020-11-13
                            </span>
                        <span class="publish-author">
                            
                            <i class="fas fa-bookmark fa-fw icon-category"></i>
                            
                            <a href="/categories/PowerPlatform/" class="post-category">
                                    PowerPlatform
                                </a>
                            
                            
                        </span>
                    </div>
                </div>
                
                <div class="card-action article-tags">
                    
                    <a href="/tags/PowerPlatform%E8%AE%A4%E8%AF%81/">
                        <span class="chip bg-color">PowerPlatform认证</span>
                    </a>
                    
                </div>
                
            </div>
        </div>
        
    </div>
</article>

</div>


<script>
    $('#articleContent').on('copy', function (e) {
        // IE8 or earlier browser is 'undefined'
        if (typeof window.getSelection === 'undefined') return;

        var selection = window.getSelection();
        // if the selection is short let's not annoy our users.
        if (('' + selection).length < Number.parseInt('120')) {
            return;
        }

        // create a div outside of the visible area and fill it with the selected text.
        var bodyElement = document.getElementsByTagName('body')[0];
        var newdiv = document.createElement('div');
        newdiv.style.position = 'absolute';
        newdiv.style.left = '-99999px';
        bodyElement.appendChild(newdiv);
        newdiv.appendChild(selection.getRangeAt(0).cloneContents());

        // we need a <pre> tag workaround.
        // otherwise the text inside "pre" loses all the line breaks!
        if (selection.getRangeAt(0).commonAncestorContainer.nodeName === 'PRE') {
            newdiv.innerHTML = "<pre>" + newdiv.innerHTML + "</pre>";
        }

        var url = document.location.href;
        newdiv.innerHTML += '<br />'
            + '来源: 码道诚公<br />'
            + '文章作者: Guo Yaxiang<br />'
            + '文章链接: <a href="' + url + '">' + url + '</a><br />'
            + '本文章著作权归作者所有，任何形式的转载都请注明出处。';

        selection.selectAllChildren(newdiv);
        window.setTimeout(function () {bodyElement.removeChild(newdiv);}, 200);
    });
</script>


<!-- 代码块功能依赖 -->
<script type="text/javascript" src="/libs/codeBlock/codeBlockFuction.js"></script>

<!-- 代码语言 -->

<script type="text/javascript" src="/libs/codeBlock/codeLang.js"></script>


<!-- 代码块复制 -->

<script type="text/javascript" src="/libs/codeBlock/codeCopy.js"></script>


<!-- 代码块收缩 -->

<script type="text/javascript" src="/libs/codeBlock/codeShrink.js"></script>


<!-- 代码块折行 -->

<style type="text/css">
code[class*="language-"], pre[class*="language-"] { white-space: pre !important; }
</style>


    

</main>




    <footer class="page-footer bg-color">
    
        <link rel="stylesheet" href="/libs/aplayer/APlayer.min.css">
<style>
    .aplayer .aplayer-lrc p {
        
        display: none;
        
        font-size: 12px;
        font-weight: 700;
        line-height: 16px !important;
    }

    .aplayer .aplayer-lrc p.aplayer-lrc-current {
        
        display: none;
        
        font-size: 15px;
        color: #42b983;
    }

    
    .aplayer.aplayer-fixed.aplayer-narrow .aplayer-body {
        left: -66px !important;
    }

    .aplayer.aplayer-fixed.aplayer-narrow .aplayer-body:hover {
        left: 0px !important;
    }

    
</style>
<div class="">
    
    <div class="row">
        <meting-js class="col l8 offset-l2 m10 offset-m1 s12"
                   server="netease"
                   type="playlist"
                   id="503838841"
                   fixed='true'
                   autoplay='false'
                   theme='#42b983'
                   loop='all'
                   order='random'
                   preload='auto'
                   volume='0.7'
                   list-folded='true'
        >
        </meting-js>
    </div>
</div>

<script src="/libs/aplayer/APlayer.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js"></script>

    
    <div class="container row center-align" style="margin-bottom: 0px !important;">
        <div class="col s12 m8 l8 copy-right">
            Copyright&nbsp;&copy;
            
                <span id="year">2020-2021</span>
            
            <span id="year">2020</span>
            <a href="/about" target="_blank">Guo Yaxiang</a>
            |&nbsp;Powered by&nbsp;<a href="https://hexo.io/" target="_blank">Hexo</a>
            |&nbsp;Theme&nbsp;<a href="https://github.com/blinkfox/hexo-theme-matery" target="_blank">Matery</a>
            <br>
            
            
            
            
            
            <br>
            
            <br>
            
        </div>
        <div class="col s12 m4 l4 social-link ">
    <a href="https://github.com/GuoYaxiang" class="tooltipped" target="_blank" data-tooltip="访问我的GitHub" data-position="top" data-delay="50">
        <i class="fab fa-github"></i>
    </a>



    <a href="mailto:YXGyxg112358@163.com" class="tooltipped" target="_blank" data-tooltip="邮件联系我" data-position="top" data-delay="50">
        <i class="fas fa-envelope-open"></i>
    </a>







    <a href="tencent://AddContact/?fromId=50&fromSubId=1&subcmd=all&uin=1431800679" class="tooltipped" target="_blank" data-tooltip="QQ联系我: 1431800679" data-position="top" data-delay="50">
        <i class="fab fa-qq"></i>
    </a>





    <a href="https://www.zhihu.com/people/guo-ya-xiang" class="tooltipped" target="_blank" data-tooltip="关注我的知乎: https://www.zhihu.com/people/guo-ya-xiang" data-position="top" data-delay="50">
        <i class="fab fa-zhihu1">知</i>
    </a>



    <a href="/atom.xml" class="tooltipped" target="_blank" data-tooltip="RSS 订阅" data-position="top" data-delay="50">
        <i class="fas fa-rss"></i>
    </a>

</div>
    </div>
</footer>

<div class="progress-bar"></div>


    <!-- 搜索遮罩框 -->
<div id="searchModal" class="modal">
    <div class="modal-content">
        <div class="search-header">
            <span class="title"><i class="fas fa-search"></i>&nbsp;&nbsp;搜索</span>
            <input type="search" id="searchInput" name="s" placeholder="请输入搜索的关键字"
                   class="search-input">
        </div>
        <div id="searchResult"></div>
    </div>
</div>

<script src="/js/search.js"></script>
<script type="text/javascript">
$(function () {
    searchFunc('/search.xml', 'searchInput', 'searchResult');
});
</script>

    <!-- 回到顶部按钮 -->
<div id="backTop" class="top-scroll">
    <a class="btn-floating btn-large waves-effect waves-light" href="#!">
        <i class="fas fa-arrow-up"></i>
    </a>
</div>


    <script src="/libs/materialize/materialize.min.js"></script>
    <script src="/libs/masonry/masonry.pkgd.min.js"></script>
    <script src="/libs/aos/aos.js"></script>
    <script src="/libs/scrollprogress/scrollProgress.min.js"></script>
    <script src="/libs/lightGallery/js/lightgallery-all.min.js"></script>
    <script src="/js/matery.js"></script>

    <!-- Baidu Analytics -->

    <!-- Baidu Push -->

<script>
    (function () {
        var bp = document.createElement('script');
        var curProtocol = window.location.protocol.split(':')[0];
        if (curProtocol === 'https') {
            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
        } else {
            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
        }
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(bp, s);
    })();
</script>

    
    <script src="/libs/others/clicklove.js" async="async"></script>
    
    

    
        <script src="//code.tidio.co/zgiqinzrat1rzwxseqhr2pnzsp2a4rjo.js"></script>
        <script>
            $(document).ready(function () {
                setInterval(change_Tidio, 50);
                function change_Tidio() {
                    var tidio=$("#tidio-chat iframe");
                    if(tidio.css("display")=="block"&& $(window).width()>977 ){
                        document.getElementById("tidio-chat-iframe").style.bottom= ($("div#backTop.top-scroll").css("display")=="none" &&$(window).width()>977)>0? "-40px" : ($("div.toc-title").length&&$(window).width()>977)>0?"85px":"20px";
                        document.getElementById("tidio-chat-iframe").style.right="-15px";
                        document.getElementById("tidio-chat-iframe").style.height=parseInt(tidio.css("height"))>=520?"520px":tidio.css("height");
                        document.getElementById("tidio-chat-iframe").style.zIndex="997";
                    }
                    else if(tidio.css("display")=="block"&&$(window).width()>601 &&$(window).width()<992 ){
                        document.getElementById("tidio-chat-iframe").style.bottom= ($("div#backTop.top-scroll").css("display")=="none" && 601< $(window).width()<992)>0? "-40px":"20px" ;
                        document.getElementById("tidio-chat-iframe").style.right="-15px";
                        document.getElementById("tidio-chat-iframe").style.zIndex="997";
                    }
                    else if(tidio.css("display")=="block"&&$(window).width()<601 && parseInt(tidio.css("height"))<230){
                        document.getElementById("tidio-chat-iframe").style.bottom= ($("div#backTop.top-scroll").css("display")=="none" && $(window).width()<601)>0? "-10px":"45px" ;
                        document.getElementById("tidio-chat-iframe").style.zIndex="997";
                    }
                    if( tidio.css("display")=="block"&&$(window).width()<601 && parseInt(tidio.css("height"))>=230){
                        document.getElementById("tidio-chat-iframe").style.zIndex="998";
                    }
                }
            });
        </script>
    

    

    

    

    

    
    <script src="/libs/instantpage/instantpage.js" type="module"></script>
    

</body>

</html>
